Stored Procedures হল প্রি-কম্পাইলড SQL কুয়েরি বা স্ক্রিপ্ট, যা ডেটাবেসে সংরক্ষিত থাকে এবং একাধিকবার চালানো যেতে পারে। Entity Framework (EF) ব্যবহার করে আপনি সহজেই Stored Procedure দিয়ে CRUD (Create, Read, Update, Delete) অপারেশন ইমপ্লিমেন্ট করতে পারেন। EF আপনাকে এই Stored Procedure গুলিকে কল করতে এবং তাদের মাধ্যমে ডেটাবেসে পরিবর্তন করতে সহায়তা করে।
এই টিউটোরিয়ালে আমরা দেখব কিভাবে EF ব্যবহার করে Stored Procedure এর মাধ্যমে CRUD অপারেশন করা যায়।
EF তে Stored Procedure ব্যবহার করতে হলে প্রথমে আপনাকে কিছু প্রাথমিক কাজ করতে হবে:
DbSet
বা DbContext
ক্লাসে কাস্টম মেথড তৈরি করতে হয়।প্রথমেই আপনাকে ডেটাবেসে একটি Stored Procedure তৈরি করতে হবে। নিচে একটি সাধারণ Stored Procedure এর উদাহরণ দেয়া হল, যা Employee টেবিলের মধ্যে নতুন ডেটা ইনসার্ট করবে:
CREATE PROCEDURE InsertEmployee
@EmployeeName NVARCHAR(100),
@EmployeeAge INT
AS
BEGIN
INSERT INTO Employees (Name, Age)
VALUES (@EmployeeName, @EmployeeAge)
END
এখানে, InsertEmployee
নামে একটি Stored Procedure তৈরি করা হয়েছে, যা Employees
টেবিলে নতুন কর্মী যোগ করবে।
এখন আপনার EF DbContext ক্লাসে Stored Procedure এর মাধ্যমে অপারেশন চালানোর জন্য মেথড তৈরি করতে হবে।
public class ApplicationDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
// Create (Insert) operation via Stored Procedure
public void InsertEmployee(string name, int age)
{
var nameParam = new SqlParameter("@EmployeeName", name);
var ageParam = new SqlParameter("@EmployeeAge", age);
// Execute the stored procedure
this.Database.ExecuteSqlRaw("EXEC InsertEmployee @EmployeeName, @EmployeeAge", nameParam, ageParam);
}
}
এখানে:
InsertEmployee
মেথডে আমরা SqlParameter
ব্যবহার করে Stored Procedure এর ইনপুট প্যারামিটার পাঠাচ্ছি।ExecuteSqlRaw
মেথড ব্যবহার করে Stored Procedure কল করা হয়েছে।আপনি Stored Procedure
ব্যবহার করে ডেটা রিট্রাইভ করতে পারেন, যেমন:
public class ApplicationDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
// Read (Select) operation via Stored Procedure
public List<Employee> GetEmployees()
{
return this.Employees.FromSqlRaw("EXEC GetAllEmployees").ToList();
}
}
এখানে:
FromSqlRaw
মেথড ব্যবহার করে আমরা GetAllEmployees
Stored Procedure কল করে Employee টেবিলের সমস্ত ডেটা রিট্রাইভ করছি।Stored Procedure
ব্যবহার করে ডেটাবেসে আপডেট অপারেশন চালানোও সম্ভব। নিচে একটি Stored Procedure এবং সেটি EF এর মাধ্যমে কল করার উদাহরণ:
CREATE PROCEDURE UpdateEmployee
@EmployeeId INT,
@EmployeeName NVARCHAR(100),
@EmployeeAge INT
AS
BEGIN
UPDATE Employees
SET Name = @EmployeeName, Age = @EmployeeAge
WHERE EmployeeId = @EmployeeId
END
public class ApplicationDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
// Update operation via Stored Procedure
public void UpdateEmployee(int employeeId, string name, int age)
{
var idParam = new SqlParameter("@EmployeeId", employeeId);
var nameParam = new SqlParameter("@EmployeeName", name);
var ageParam = new SqlParameter("@EmployeeAge", age);
// Execute the stored procedure
this.Database.ExecuteSqlRaw("EXEC UpdateEmployee @EmployeeId, @EmployeeName, @EmployeeAge", idParam, nameParam, ageParam);
}
}
এখানে:
UpdateEmployee
মেথডে আমরা তিনটি প্যারামিটার পাঠাচ্ছি, এবং ExecuteSqlRaw
ব্যবহার করে Stored Procedure কল করছি।Delete
অপারেশনের জন্যও আপনি Stored Procedure ব্যবহার করতে পারেন। নিচে একটি DeleteEmployee
Stored Procedure এবং এটি EF এর মাধ্যমে কল করার উদাহরণ দেয়া হল:
CREATE PROCEDURE DeleteEmployee
@EmployeeId INT
AS
BEGIN
DELETE FROM Employees WHERE EmployeeId = @EmployeeId
END
public class ApplicationDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
// Delete operation via Stored Procedure
public void DeleteEmployee(int employeeId)
{
var idParam = new SqlParameter("@EmployeeId", employeeId);
// Execute the stored procedure
this.Database.ExecuteSqlRaw("EXEC DeleteEmployee @EmployeeId", idParam);
}
}
এখানে:
DeleteEmployee
মেথডে আমরা EmployeeId
প্যারামিটার পাঠাচ্ছি এবং ExecuteSqlRaw
ব্যবহার করে Stored Procedure কল করছি, যাতে নির্দিষ্ট কর্মী ডেটাবেস থেকে মুছে ফেলা হয়।Stored Procedure কল করার সময় আপনি SQL প্যারামিটার ব্যবহার করতে পারেন, যেগুলি SQL ইনজেকশন প্রতিরোধে সহায়ক। এর মাধ্যমে আপনি ডায়নামিক ডেটা নিয়ে কাজ করতে পারেন, যেমন:
var parameter = new SqlParameter("@EmployeeId", SqlDbType.Int) { Value = employeeId };
এইভাবে, আপনি প্যারামিটারাইজড কুয়েরি চালিয়ে SQL ইনজেকশন এড়াতে পারবেন।
SqlParameter
ব্যবহার করে SQL ইনজেকশন থেকে নিরাপদে ডেটা পাঠানো যায়।Stored Procedure দিয়ে CRUD অপারেশন ব্যবহার করলে ডেটাবেসের নিরাপত্তা, পারফরম্যান্স এবং রিয়ুজেবিলিটি বাড়াতে সাহায্য করে।
common.read_more